package utils

import "fmt"

// FormatSpeed 格式化速度显示
func FormatSpeed(bytesPerSec float64) string {
	if bytesPerSec >= 1024*1024 {
		return fmt.Sprintf("%.2f MB/s", bytesPerSec/(1024*1024))
	} else if bytesPerSec >= 1024 {
		return fmt.Sprintf("%.2f KB/s", bytesPerSec/1024)
	} else if bytesPerSec > 0 {
		return fmt.Sprintf("%.2f B/s", bytesPerSec)
	}
	return "0 B/s"
}

// FormatLatency 格式化延迟显示
func FormatLatency(ms float64) string {
	if ms >= 1000 {
		return fmt.Sprintf("%.2f s", ms/1000)
	} else if ms >= 1 {
		return fmt.Sprintf("%.2f ms", ms)
	} else if ms > 0 {
		return fmt.Sprintf("%.2f μs", ms*1000)
	}
	return "0 ms"
}

// FormatBytes 格式化字节大小显示
func FormatBytes(bytes uint64) string {
	if bytes >= 1024*1024*1024*1024 {
		return fmt.Sprintf("%.2f TB", float64(bytes)/(1024*1024*1024*1024))
	} else if bytes >= 1024*1024*1024 {
		return fmt.Sprintf("%.2f GB", float64(bytes)/(1024*1024*1024))
	} else if bytes >= 1024*1024 {
		return fmt.Sprintf("%.2f MB", float64(bytes)/(1024*1024))
	} else if bytes >= 1024 {
		return fmt.Sprintf("%.2f KB", float64(bytes)/1024)
	}
	return fmt.Sprintf("%d B", bytes)
}

// FormatCount 格式化计数显示
func FormatCount(count uint64) string {
	if count >= 1000000 {
		return fmt.Sprintf("%.2f M", float64(count)/1000000)
	} else if count >= 1000 {
		return fmt.Sprintf("%.2f K", float64(count)/1000)
	}
	return fmt.Sprintf("%d", count)
}